in progress/BOGGLE/bogglewalk.R

bogglewalk=function(){
     walklist=list(c(2L,5L,6L), # 1
                   c(1L,3L,5L,6L,7L), # 2
                   c(2L,4L,6L,7L,8L), # 3
                   c(3L,7L,8L), # 4
                   c(1L,2L,6L,9L,10L), # 5
                   c(1L,2L,3L,5L,7L,9L,10L,11L), # 6
                   c(2L,3L,4L,6L,8L,10L,11L,12L), # 7
                   c(3L,4L,7L,11L,12L), # 8
                   c(5L,6L,10L,13L,14L), # 9
                   c(5L,6L,7L,9L,11L,13L,14L,15L), # 10
                   c(6L,7L,8L,10L,12L,14L,15L,16L), # 11
                   c(7L,8L,11L,15L,16L), # 12
                   c(9L,10L,14L), # 13
                   c(9L,10L,11L,13L,15L), # 14
                   c(10L,11L,12L,14L,16L), # 15
                   c(11L,12L,15L)) # 16

   walk=rep(0L,16);walk[1]=6 # start is the first cell in the matrix
   for(i in 2:16){
      walk[i]=ifelse( sum(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)])==length(walklist[[walk[(i-1)]]]),0,
                        ifelse( sum(!(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)]))==1,
                                walklist[[walk[(i-1)]]][ !(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)])],
                                sample(walklist[[walk[(i-1)]]][!(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)])],1)  ))
      if(walk[i]==0) return()} # returns NULL
   return(walk)}


tmp=t(replicate(1E6,bogglewalk()))
tmp=do.call(rbind,tmp[sapply(tmp,function(x){length(x)>0})])
tmp=tmp[duplicated(tmp)==F,]
res1=apply(tmp,1,function(x){paste(x,collapse=".")})
table(tmp.string%in%middlewalks)

bogglewalks16=rbind(bogglewalks16,tmp)
table(duplicated(bogglewalks16))
bogglewalks16=bogglewalks16[duplicated(bogglewalks16)==FALSE,]


# 3x3 matrix
bogglewalk=function(){
   walklist=boggles[[1]][[2]]
   walk=rep(0L,9);walk[1]=1 # sample(c(1L,2L,5L),1) # start is the first walk in the matrix
   for(i in 2:9){
      walk[i]=ifelse( sum(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)])==length(walklist[[walk[(i-1)]]]),0,
                        ifelse( sum(!(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)]))==1,
                                walklist[[walk[(i-1)]]][ !(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)])],
                                sample(walklist[[walk[(i-1)]]][!(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)])],1)  ))
      if(walk[i]==0) return(walk)}
   return(walk)}

replicate(2,replicate(2,t(bogglewalk())))

tmp=t(replicate(1E2,bogglewalk()))
walks=rbind(walks,tmp)
walks=walks[apply(walks,1,function(x) sum(x==0))==0,]
walks=walks[duplicated(walks)==F,]
nrow(walks[walks[,1]==1,])

# 2 x 2 matrix
bogglewalk=function(){
   walklist=list(c(2,3,4),c(1,3,4),c(1,2,4),c(1,2,3))
   walk=rep(0L,4);walk[1]=sample(c(1L,2L,3L,4L),1) # start is the first walk in the matrix
   for(i in 2:4){
      walk[i]=ifelse( sum(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)])==length(walklist[[walk[(i-1)]]]),0,
                        ifelse( sum(!(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)]))==1,
                                walklist[[walk[(i-1)]]][ !(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)])],
                                sample(walklist[[walk[(i-1)]]][!(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)])],1)  ))
      if(walk[i]==0) return(walk)}
   return(walk)}


tmp=t(replicate(1E3,bogglewalk()))
walks=rbind(walks,tmp)
walks=walks[apply(walks,1,function(x) sum(x==0))==0,]
walks=walks[duplicated(walks)==F,]

# Transform the ones that start on the corners so taht they start with 1 instead. 
# filter out the duplicates.

t0=
vdweijer/games documentation built on Dec. 23, 2021, 3:02 p.m.